\documentclass{article}
%=================Begin:Packages===================
\usepackage{graphicx}
\usepackage{graphicx}
\usepackage{bmpsize}
\usepackage{algorithm}

\usepackage[noend]{algpseudocode}
\usepackage{enumitem}
\usepackage{url}
\usepackage{amsthm}

\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{xargs}                      % Use more than one optional parameter in a new commands
\usepackage[pdftex,dvipsnames]{xcolor}  % Coloured text etc.
% 
\usepackage[colorinlistoftodos,prependcaption,textsize=tiny]{todonotes}
\usepackage[normalem]{ulem}

%=================End:Packages===================

%==================Begin:Style===================

\newtheorem{definition}{Definition}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}
\newcommand\mathperiod{.}
\newcommand\mathcomma{,}

\newcommandx{\fatemeh}[2][1=]{\todo[linecolor=pink,backgroundcolor=pink!25,bordercolor=pink,#1]{#2}}
\newcommandx{\insertx}[2]{{\uline{#1}}\textcolor{red}{ #2}}
\newcommandx{\replace}[2]{{\sout{#1}}\textcolor{red}{#2}}
\newcommandx{\remove}[1]{{\sout{#1}}}
\newcommandx{\comment}[2]{{\uline{#1}}\textcolor{red}{ (-comment- #2)}}

%===================End:Style====================

%==================Begin:Macros==================

\newcommand{\floor}[1]{\left\lfloor #1 \right\rfloor}
\newcommand{\ceil}[1]{\left\lceil #1 \right\rceil}

\newcommand{\vect}[1]{\overset{\rightharpoonup}{#1}}

% probability with square brackets of the right size
% \newcommand{\Pr}{\ensuremath{\mathsf{Pr}}} %probability
% \newcommand{\Prb}[1]{\ensuremath{\Pr\left [#1 \right ]}}

\newcommand*\set[1]{\{ #1 \}} % in text, we don't want {} to grow
\newcommand*\Set[1]{\left\{ #1 \right\}}
\newcommand*\setst[2]{\{ #1 | #2 \}}
\newcommand*\Setst[2]%
{\left\{\,#1\vphantom{#2} \;\right|\left. #2 \vphantom{#1}\,\right\}}

\newcommand*\List[1]{\left[ #1 \right]}  % cute abbreviations
\newcommand*\listst[2]{[ #1 | #2 ]}
\newcommand*\Listst[2]%
{\left[\,#1\vphantom{#2} \;\right|\left. #2 \vphantom{#1}\,\right]}

% uniform random selection from set
\newcommand{\randsel}[0]{\ensuremath{\xleftarrow{\text{\$}}}}

% oracles
\newcommand{\ora}[1]{\ensuremath{\mathcal{O}\mathsf{#1}}}
% oracle set
\newcommand{\oraSet}[1]{\ensuremath{\mathcal{O}\textsc{#1}}}
% algorithm
\newcommand{\algo}[1]{\ensuremath{\mathsf{#1}}}
% party
\newcommand{\prt}[1]{\ensuremath{\mathcal{#1}}}
% long-form variable
\newcommand{\var}[1]{\ensuremath{\mathit{#1}}}

%=================End:Macros=====================

%=================Begin:Definitions===================

\newcommand{\VRF}{\algo{VRF}} 
\newcommand{\RingVRF}{\algo{RingVRF}} 
\newcommand{\Sign}{\algo{Sign}} 
\newcommand{\Verify}{\algo{Verify}} 
\newcommand{\KeyGen}{\algo{KeyGen}} 
\newcommand{\Out}{\algo{Out}} 

\newcommand{\sk}{\ensuremath{\mathsf{sk}}}
\newcommand{\pk}{\ensuremath{\mathsf{pk}}}
\newcommand{\pkc}{\ensuremath{\mathsf{pkc}}}
\newcommand{\skc}{\ensuremath{\mathsf{skc}}}
\newcommand{\skvrf}{\ensuremath{\sk_{\VRF}}}
\newcommand{\pkvrf}{\ensuremath{\pk_{\VRF}}}
\newcommand{\skcvrf}{\ensuremath{\skc_{\VRF}}}
\newcommand{\pkcvrf}{\ensuremath{\pkc_{\VRF}}}
\newcommand{\labelVRFa}{\mathsf{A}}
\newcommand{\labelVRFr}{\mathsf{R}}
\newcommand{\VRFa}{\ensuremath{\VRF^\labelVRFa}} 
\newcommand{\VRFr}{\ensuremath{\VRF^\labelVRFr}} 
\newcommand{\skvrfa}{\ensuremath{\skvrf^\labelVRFa}}
\newcommand{\pkvrfa}{\ensuremath{\pkvrf^\labelVRFa}}
\newcommand{\skcvrfa}{\ensuremath{\skcvrf^\labelVRFa}}
\newcommand{\pkcvrfa}{\ensuremath{\pkcvrf^\labelVRFa}}
\newcommand{\skvrfr}{\ensuremath{\skvrf^\labelVRFr}}
\newcommand{\pkvrfr}{\ensuremath{\pkvrf^\labelVRFr}}
\newcommand{\pr}{\ensuremath{\mathsf{Pr}}}
\newcommand{\Trun}{\ensuremath{T_{\mathsf{run}}}}
\newcommand{\Twait}{\ensuremath{T_{\mathsf{wait}}}}
\newcommand{\Tsec}{\ensuremath{T_{\mathsf{sec}}}}


\newcommand{\vals}{\ensuremath{\mathcal{V}}}
\newcommand{\nvals}{\ensuremath{|\vals|}}
% \newcommand{\para}{\ensuremath{\rho}}
% \newcommand{\npvals}{\ensuremath{n'}}

\newcommand{\val}{\ensuremath{v}}

%=================End:Definitions===================


\title{Sassafras: Semi-anonymous sortition for predictable-time block production}

% Sassafras: Semi-anonymous sortition (of) staked assignies (for) fixed-time rhythmic assignement (of) slots

% SASSy: Semi-anonymous slot sortition

% Sassaby: Semi-anonymous sortition [sa] for block yelling
% Sassabies: Semi-anonymous sortition [sa] for block insertion (in) epoch slots


\author{Handan Kilinc Alper \and Jeffrey Burdges \and Alistair Stewart \and Sergey Vasilyev}


\begin{document}
	
	\maketitle
	
	\begin{abstract}
		We describe a lock block production protocol that both keeps upcoming block producers anonymous, like Ouroboros Praos and legacy proof-of-work schemes do, as well as providing predictable or fairly constant block times. 
		We also support transactions being encrypted and sent to upcoming block producers, which eliminates the ``memepool'' from blockchain protocols, which permits some anonymity from MimbleWimble.
	\end{abstract}
	
	% \newpage
	% \tableofcontents
	% \newpage
	
	\input{sass-0-introduction}
	\input{sass-1-vrfs}
	\input{sass-2-announce}
	\input{sass-3-analysis}
	\input{sass-4-parameter}
	
	\bibliographystyle{plain}
	%\bibliography{references,crypto}
\end{document}
